﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace StandAlone
{
    public class Funciones
    {
        //ATRIBUTOS
        public static string RutaPapelOffice = "Data Source=localhost;Initial Catalog=PapelOffice;Integrated Security=True";
 
        //MÉTODOS
        public static DataSet Read_DataBase(string Consulta)
        {
            DataSet datset = new DataSet();
            try
            {   
                SqlConnection Conexion = new SqlConnection();
                Conexion.ConnectionString = RutaPapelOffice;
                SqlDataAdapter da = new SqlDataAdapter(Consulta, Conexion);
                da.Fill(datset, "TablaAux");
                return datset;
            }
            catch (Exception)
            {
                MessageBox.Show("Error al intentar conectar con la base de datos.", "Error", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                return datset;
            }
        }

        public static void Insert_DataBase(string Consulta)
        {
            try
            {
                DataSet datset = new DataSet();
                SqlConnection Conexion = new SqlConnection();
                Conexion.ConnectionString = RutaPapelOffice;
                SqlDataAdapter da = new SqlDataAdapter(Consulta, Conexion);
                da.Fill(datset, "TablaAux");
                return;
            }
            catch (Exception)
            {
                MessageBox.Show("Error al intentar conectar con la base de datos.", "Error", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
            }
            
        }

        public static void Cargar_Combo(string Consulta, string Id, string Etiqueta, ref ComboBox Combo)
        {
            DataSet datset;
            datset = new DataSet();
            datset = Read_DataBase(Consulta);
            Combo.ValueMember = Id;
            Combo.DisplayMember = Etiqueta;
            Combo.Text = Etiqueta;
            Combo.DataSource = datset.Tables[0].DefaultView;
        }

        public static void Cargar_Lst(string Consulta, string Etiqueta, string Eliminado, ref ListBox lst)
        {
            DataSet datset;
            datset = new DataSet();
            datset = Read_DataBase(Consulta);
            lst.ValueMember = Eliminado;
            lst.DisplayMember = Etiqueta;
            lst.DataSource = datset.Tables[0].DefaultView;
        }

        public static void Cargar_Combo(string Consulta, string Etiqueta, ref ComboBox Combo)
        {
            DataSet datset;
            datset = new DataSet();
            datset = Read_DataBase(Consulta);
            Combo.DisplayMember = Etiqueta;
            Combo.Text = Etiqueta;
            Combo.DataSource = datset.Tables[0].DefaultView;
        }

        public static bool ChequearConexionSQL()
        {
            SqlConnection cn = new SqlConnection(RutaPapelOffice);
            string Consulta = "Select * from Usuarios";
            SqlDataAdapter adaptador = new SqlDataAdapter(Consulta, cn);
            try
            {
                cn.Open();
                cn.Close();
                return true;
            }
            catch (Exception) 
            {
                DialogResult result;
                result = MessageBox.Show("Error al intentar conectar con la base de datos. Si el servicio 'MSSQLSERVER' no se ha iniciado," 
                +" inícielo y presione Reintentar, o en su defecto presione Cancelar para cerrar la aplicación.", "Error", 
                MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                if (result == DialogResult.Retry)
                {
                    ChequearConexionSQL();
                    return false;
                }
                else
                {
                    Application.Exit();
                    return false;
                }
                   
            }
        }
   
    }
}
